package com.unalm.examensustitutorio.dao;

import java.util.List;

import javax.persistence.EntityManager;
import javax.persistence.EntityManagerFactory;

import javax.persistence.Query;

import com.unalm.examensustitutorio.util.entity.EUsuario;

public class DUsuario implements IDUsuario {

	private EntityManagerFactory emf;
	private EntityManager em;

	@Override
	public EUsuario validarUsuario(EUsuario eUsuario) {
		em = emf.createEntityManager();
		try {
			Query consulta = em.createQuery("select u from EUsuario u "
					+ "  where u.str_codUsuario=:id and u.str_pwdUsu=:pwd");
			consulta.setParameter("id", eUsuario.getStr_codUsuario());
			consulta.setParameter("pwd", eUsuario.getStr_pwdUsu());

			eUsuario = (EUsuario) consulta.getSingleResult();

		} catch (Exception e) {
			eUsuario = null;
			e.printStackTrace();
			System.out.println("...Error --> " + e);
		} finally {
			em.close();
		}

		return eUsuario;

	}

	public void setEmf(EntityManagerFactory emf) {
		this.emf = emf;
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<EUsuario> listarAlumnos() {
		List<EUsuario> lstUsuario = null;
		em = emf.createEntityManager();
		try {
			Query consulta = em
					.createQuery("select u from EUsuario u "
							+ "  where u.str_tipoUsu = 'A' and u.int_pagoUSU=1 and u.int_examenPlazadoUSU<=2 and u.int_examenExtemporaneoUSU<=2");

			lstUsuario = consulta.getResultList();

		} catch (Exception e) {

			e.printStackTrace();
		} finally {
			em.close();
		}

		return lstUsuario;
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<EUsuario> listarDocentes() {
		List<EUsuario> lstUsuario = null;
		em = emf.createEntityManager();
		try {
			Query consulta = em
					.createQuery("select u from EUsuario u "
							+ "  where u.str_tipoUsu = 'C' and u.int_dispUSU=1");

			lstUsuario = consulta.getResultList();

		} catch (Exception e) {

			e.printStackTrace();
		} finally {
			em.close();
		}

		return lstUsuario;
	}
}
